package com.lesama.block;

/*
* 代码块：
* 1. 局部代码块
*    位置： 在方法中定义
*    作用： 限定变量的生命周期，尽早释放，提高内存利用率
* 2. 构造代码块
*    位置： 在类中定义
*    特点： 每次构造方法执行时，都会执行该代码块中的代码，并在构造方法执行前执行
*    作用： 可以把构造方法中一些相同的逻辑抽取出来到构造代码块中，提高代码服用性
* 3. 静态代码块
*    位置： 在类中定义，用static修饰
*    特点： 和静态成员一样，当类的字节码文件加载到方法区时就会执行，只加载一次
*    作用： 进行静态成员的初始化，加载一些配置文件
* */
public class BlockTest {
    public static void main(String[] args) {
        {
            int num = 10;
            System.out.println(num);
        }
        Student stu1 = new Student();
        Student stu2 = new Student();
    }
}


class Student {
    static {
        System.out.println("Student的静态代码块");
    }
    {
        System.out.println("student的构造代码块");
    }
    public Student() {
        System.out.println("Student的空参构造函数");
    }
    public Student(int num) {
        System.out.println("Student的带参构造函数");
    }
}